package com.wkm.chainchain.pbft.msg;

import com.wkm.chainchain.pbft.node.Node;
import lombok.Data;

/**
 * PBFT消息格式 : <STATUS, V, N, D(m), i>
 * V：当前视图的编号。视图的编号是什么意思呢？比如当前主节点为 A，视图编号为 1，如果主节点换成 B，那么视图编号就为 2，这个概念和 raft 的 term 任期是很类似的。
 * N：当前请求的编号。主节点收到客户端的每个请求都以一个编号来标记。
 * M：消息的内容
 * d或D（m）：消息内容的摘要
 * i： 节点的编号
 */
@Data
public class PBFTMsg {
    private int msgType;

    private Integer viewIndex;

    private Long msgIndex;

    private String message;

    private String digest;

    /**
     * 发送消息的node节点编号
     */
    private int nodeIndex;

    /**
     * 初始化时发送node
     */
    private Node node;
}
